/*
 * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The OpenAirInterface Software Alliance licenses this file to You under
 * the OAI Public License, Version 1.1  (the "License"); you may not use this
 * file except in compliance with the License. You may obtain a copy of the
 * License at
 *
 *      http://www.openairinterface.org/?page_id=698
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *-------------------------------------------------------------------------------
 * For more information about the OpenAirInterface (OAI) Software Alliance:
 *      contact@openairinterface.org
 */
/**
 * Nudr_DataRepository API OpenAPI file
 * Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB,
 * ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
 *
 * The version of the OpenAPI document: 2.1.2
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator
 * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
 * the class manually.
 */

#include "PolicyDataChangeNotification.h"

namespace oai::udr::model {

PolicyDataChangeNotification::PolicyDataChangeNotification() {
  m_AmPolicyDataIsSet = false;
  m_UePolicySetIsSet = false;
  m_PlmnUePolicySetIsSet = false;
  m_SmPolicyDataIsSet = false;
  m_UsageMonDataIsSet = false;
  m_SponsorConnectivityDataIsSet = false;
  m_BdtDataIsSet = false;
  m_OpSpecDataIsSet = false;
  m_OpSpecDataMapIsSet = false;
  m_UeId = "";
  m_UeIdIsSet = false;
  m_SponsorId = "";
  m_SponsorIdIsSet = false;
  m_BdtRefId = "";
  m_BdtRefIdIsSet = false;
  m_UsageMonId = "";
  m_UsageMonIdIsSet = false;
  m_PlmnIdIsSet = false;
  m_DelResourcesIsSet = false;
  m_NotifId = "";
  m_NotifIdIsSet = false;
  m_ReportedFragmentsIsSet = false;
}

PolicyDataChangeNotification::~PolicyDataChangeNotification() {}

void PolicyDataChangeNotification::validate() {
  // TODO: implement validation
}

void to_json(nlohmann::json &j, const PolicyDataChangeNotification &o) {
  j = nlohmann::json();
  if (o.amPolicyDataIsSet())
    j["amPolicyData"] = o.m_AmPolicyData;
  if (o.uePolicySetIsSet())
    j["uePolicySet"] = o.m_UePolicySet;
  if (o.plmnUePolicySetIsSet())
    j["plmnUePolicySet"] = o.m_PlmnUePolicySet;
  if (o.smPolicyDataIsSet())
    j["smPolicyData"] = o.m_SmPolicyData;
  if (o.usageMonDataIsSet())
    j["usageMonData"] = o.m_UsageMonData;
  if (o.sponsorConnectivityDataIsSet())
    j["SponsorConnectivityData"] = o.m_SponsorConnectivityData;
  if (o.bdtDataIsSet())
    j["bdtData"] = o.m_BdtData;
  if (o.opSpecDataIsSet())
    j["opSpecData"] = o.m_OpSpecData;
  if (o.opSpecDataMapIsSet() || !o.m_OpSpecDataMap.empty())
    j["opSpecDataMap"] = o.m_OpSpecDataMap;
  if (o.ueIdIsSet())
    j["ueId"] = o.m_UeId;
  if (o.sponsorIdIsSet())
    j["sponsorId"] = o.m_SponsorId;
  if (o.bdtRefIdIsSet())
    j["bdtRefId"] = o.m_BdtRefId;
  if (o.usageMonIdIsSet())
    j["usageMonId"] = o.m_UsageMonId;
  if (o.plmnIdIsSet())
    j["plmnId"] = o.m_PlmnId;
  if (o.delResourcesIsSet() || !o.m_DelResources.empty())
    j["delResources"] = o.m_DelResources;
  if (o.notifIdIsSet())
    j["notifId"] = o.m_NotifId;
  if (o.reportedFragmentsIsSet() || !o.m_ReportedFragments.empty())
    j["reportedFragments"] = o.m_ReportedFragments;
}

void from_json(const nlohmann::json &j, PolicyDataChangeNotification &o) {
  if (j.find("amPolicyData") != j.end()) {
    j.at("amPolicyData").get_to(o.m_AmPolicyData);
    o.m_AmPolicyDataIsSet = true;
  }
  if (j.find("uePolicySet") != j.end()) {
    j.at("uePolicySet").get_to(o.m_UePolicySet);
    o.m_UePolicySetIsSet = true;
  }
  if (j.find("plmnUePolicySet") != j.end()) {
    j.at("plmnUePolicySet").get_to(o.m_PlmnUePolicySet);
    o.m_PlmnUePolicySetIsSet = true;
  }
  if (j.find("smPolicyData") != j.end()) {
    j.at("smPolicyData").get_to(o.m_SmPolicyData);
    o.m_SmPolicyDataIsSet = true;
  }
  if (j.find("usageMonData") != j.end()) {
    j.at("usageMonData").get_to(o.m_UsageMonData);
    o.m_UsageMonDataIsSet = true;
  }
  if (j.find("SponsorConnectivityData") != j.end()) {
    j.at("SponsorConnectivityData").get_to(o.m_SponsorConnectivityData);
    o.m_SponsorConnectivityDataIsSet = true;
  }
  if (j.find("bdtData") != j.end()) {
    j.at("bdtData").get_to(o.m_BdtData);
    o.m_BdtDataIsSet = true;
  }
  if (j.find("opSpecData") != j.end()) {
    j.at("opSpecData").get_to(o.m_OpSpecData);
    o.m_OpSpecDataIsSet = true;
  }
  if (j.find("opSpecDataMap") != j.end()) {
    j.at("opSpecDataMap").get_to(o.m_OpSpecDataMap);
    o.m_OpSpecDataMapIsSet = true;
  }
  if (j.find("ueId") != j.end()) {
    j.at("ueId").get_to(o.m_UeId);
    o.m_UeIdIsSet = true;
  }
  if (j.find("sponsorId") != j.end()) {
    j.at("sponsorId").get_to(o.m_SponsorId);
    o.m_SponsorIdIsSet = true;
  }
  if (j.find("bdtRefId") != j.end()) {
    j.at("bdtRefId").get_to(o.m_BdtRefId);
    o.m_BdtRefIdIsSet = true;
  }
  if (j.find("usageMonId") != j.end()) {
    j.at("usageMonId").get_to(o.m_UsageMonId);
    o.m_UsageMonIdIsSet = true;
  }
  if (j.find("plmnId") != j.end()) {
    j.at("plmnId").get_to(o.m_PlmnId);
    o.m_PlmnIdIsSet = true;
  }
  if (j.find("delResources") != j.end()) {
    j.at("delResources").get_to(o.m_DelResources);
    o.m_DelResourcesIsSet = true;
  }
  if (j.find("notifId") != j.end()) {
    j.at("notifId").get_to(o.m_NotifId);
    o.m_NotifIdIsSet = true;
  }
  if (j.find("reportedFragments") != j.end()) {
    j.at("reportedFragments").get_to(o.m_ReportedFragments);
    o.m_ReportedFragmentsIsSet = true;
  }
}

AmPolicyData PolicyDataChangeNotification::getAmPolicyData() const {
  return m_AmPolicyData;
}
void PolicyDataChangeNotification::setAmPolicyData(AmPolicyData const &value) {
  m_AmPolicyData = value;
  m_AmPolicyDataIsSet = true;
}
bool PolicyDataChangeNotification::amPolicyDataIsSet() const {
  return m_AmPolicyDataIsSet;
}
void PolicyDataChangeNotification::unsetAmPolicyData() {
  m_AmPolicyDataIsSet = false;
}
UePolicySet PolicyDataChangeNotification::getUePolicySet() const {
  return m_UePolicySet;
}
void PolicyDataChangeNotification::setUePolicySet(UePolicySet const &value) {
  m_UePolicySet = value;
  m_UePolicySetIsSet = true;
}
bool PolicyDataChangeNotification::uePolicySetIsSet() const {
  return m_UePolicySetIsSet;
}
void PolicyDataChangeNotification::unsetUePolicySet() {
  m_UePolicySetIsSet = false;
}
UePolicySet PolicyDataChangeNotification::getPlmnUePolicySet() const {
  return m_PlmnUePolicySet;
}
void PolicyDataChangeNotification::setPlmnUePolicySet(
    UePolicySet const &value) {
  m_PlmnUePolicySet = value;
  m_PlmnUePolicySetIsSet = true;
}
bool PolicyDataChangeNotification::plmnUePolicySetIsSet() const {
  return m_PlmnUePolicySetIsSet;
}
void PolicyDataChangeNotification::unsetPlmnUePolicySet() {
  m_PlmnUePolicySetIsSet = false;
}
SmPolicyData PolicyDataChangeNotification::getSmPolicyData() const {
  return m_SmPolicyData;
}
void PolicyDataChangeNotification::setSmPolicyData(SmPolicyData const &value) {
  m_SmPolicyData = value;
  m_SmPolicyDataIsSet = true;
}
bool PolicyDataChangeNotification::smPolicyDataIsSet() const {
  return m_SmPolicyDataIsSet;
}
void PolicyDataChangeNotification::unsetSmPolicyData() {
  m_SmPolicyDataIsSet = false;
}
UsageMonData PolicyDataChangeNotification::getUsageMonData() const {
  return m_UsageMonData;
}
void PolicyDataChangeNotification::setUsageMonData(UsageMonData const &value) {
  m_UsageMonData = value;
  m_UsageMonDataIsSet = true;
}
bool PolicyDataChangeNotification::usageMonDataIsSet() const {
  return m_UsageMonDataIsSet;
}
void PolicyDataChangeNotification::unsetUsageMonData() {
  m_UsageMonDataIsSet = false;
}
SponsorConnectivityData
PolicyDataChangeNotification::getSponsorConnectivityData() const {
  return m_SponsorConnectivityData;
}
void PolicyDataChangeNotification::setSponsorConnectivityData(
    SponsorConnectivityData const &value) {
  m_SponsorConnectivityData = value;
  m_SponsorConnectivityDataIsSet = true;
}
bool PolicyDataChangeNotification::sponsorConnectivityDataIsSet() const {
  return m_SponsorConnectivityDataIsSet;
}
void PolicyDataChangeNotification::unsetSponsorConnectivityData() {
  m_SponsorConnectivityDataIsSet = false;
}
BdtData PolicyDataChangeNotification::getBdtData() const { return m_BdtData; }
void PolicyDataChangeNotification::setBdtData(BdtData const &value) {
  m_BdtData = value;
  m_BdtDataIsSet = true;
}
bool PolicyDataChangeNotification::bdtDataIsSet() const {
  return m_BdtDataIsSet;
}
void PolicyDataChangeNotification::unsetBdtData() { m_BdtDataIsSet = false; }
OperatorSpecificDataContainer
PolicyDataChangeNotification::getOpSpecData() const {
  return m_OpSpecData;
}
void PolicyDataChangeNotification::setOpSpecData(
    OperatorSpecificDataContainer const &value) {
  m_OpSpecData = value;
  m_OpSpecDataIsSet = true;
}
bool PolicyDataChangeNotification::opSpecDataIsSet() const {
  return m_OpSpecDataIsSet;
}
void PolicyDataChangeNotification::unsetOpSpecData() {
  m_OpSpecDataIsSet = false;
}
std::map<std::string, OperatorSpecificDataContainer> &
PolicyDataChangeNotification::getOpSpecDataMap() {
  return m_OpSpecDataMap;
}
void PolicyDataChangeNotification::setOpSpecDataMap(
    std::map<std::string, OperatorSpecificDataContainer> const &value) {
  m_OpSpecDataMap = value;
  m_OpSpecDataMapIsSet = true;
}
bool PolicyDataChangeNotification::opSpecDataMapIsSet() const {
  return m_OpSpecDataMapIsSet;
}
void PolicyDataChangeNotification::unsetOpSpecDataMap() {
  m_OpSpecDataMapIsSet = false;
}
std::string PolicyDataChangeNotification::getUeId() const { return m_UeId; }
void PolicyDataChangeNotification::setUeId(std::string const &value) {
  m_UeId = value;
  m_UeIdIsSet = true;
}
bool PolicyDataChangeNotification::ueIdIsSet() const { return m_UeIdIsSet; }
void PolicyDataChangeNotification::unsetUeId() { m_UeIdIsSet = false; }
std::string PolicyDataChangeNotification::getSponsorId() const {
  return m_SponsorId;
}
void PolicyDataChangeNotification::setSponsorId(std::string const &value) {
  m_SponsorId = value;
  m_SponsorIdIsSet = true;
}
bool PolicyDataChangeNotification::sponsorIdIsSet() const {
  return m_SponsorIdIsSet;
}
void PolicyDataChangeNotification::unsetSponsorId() {
  m_SponsorIdIsSet = false;
}
std::string PolicyDataChangeNotification::getBdtRefId() const {
  return m_BdtRefId;
}
void PolicyDataChangeNotification::setBdtRefId(std::string const &value) {
  m_BdtRefId = value;
  m_BdtRefIdIsSet = true;
}
bool PolicyDataChangeNotification::bdtRefIdIsSet() const {
  return m_BdtRefIdIsSet;
}
void PolicyDataChangeNotification::unsetBdtRefId() { m_BdtRefIdIsSet = false; }
std::string PolicyDataChangeNotification::getUsageMonId() const {
  return m_UsageMonId;
}
void PolicyDataChangeNotification::setUsageMonId(std::string const &value) {
  m_UsageMonId = value;
  m_UsageMonIdIsSet = true;
}
bool PolicyDataChangeNotification::usageMonIdIsSet() const {
  return m_UsageMonIdIsSet;
}
void PolicyDataChangeNotification::unsetUsageMonId() {
  m_UsageMonIdIsSet = false;
}
PlmnId PolicyDataChangeNotification::getPlmnId() const { return m_PlmnId; }
void PolicyDataChangeNotification::setPlmnId(PlmnId const &value) {
  m_PlmnId = value;
  m_PlmnIdIsSet = true;
}
bool PolicyDataChangeNotification::plmnIdIsSet() const { return m_PlmnIdIsSet; }
void PolicyDataChangeNotification::unsetPlmnId() { m_PlmnIdIsSet = false; }
std::vector<std::string> &PolicyDataChangeNotification::getDelResources() {
  return m_DelResources;
}
void PolicyDataChangeNotification::setDelResources(
    std::vector<std::string> const &value) {
  m_DelResources = value;
  m_DelResourcesIsSet = true;
}
bool PolicyDataChangeNotification::delResourcesIsSet() const {
  return m_DelResourcesIsSet;
}
void PolicyDataChangeNotification::unsetDelResources() {
  m_DelResourcesIsSet = false;
}
std::string PolicyDataChangeNotification::getNotifId() const {
  return m_NotifId;
}
void PolicyDataChangeNotification::setNotifId(std::string const &value) {
  m_NotifId = value;
  m_NotifIdIsSet = true;
}
bool PolicyDataChangeNotification::notifIdIsSet() const {
  return m_NotifIdIsSet;
}
void PolicyDataChangeNotification::unsetNotifId() { m_NotifIdIsSet = false; }
std::vector<NotificationItem> &
PolicyDataChangeNotification::getReportedFragments() {
  return m_ReportedFragments;
}
void PolicyDataChangeNotification::setReportedFragments(
    std::vector<NotificationItem> const &value) {
  m_ReportedFragments = value;
  m_ReportedFragmentsIsSet = true;
}
bool PolicyDataChangeNotification::reportedFragmentsIsSet() const {
  return m_ReportedFragmentsIsSet;
}
void PolicyDataChangeNotification::unsetReportedFragments() {
  m_ReportedFragmentsIsSet = false;
}

} // namespace oai::udr::model
